유연한 시스템의 기초는 강력한 내부 계약 또는 객체가 따라야 할 인터페이스를 정의하는 데 있다. 이 맥락에서 우리는 테이블 인터페이스 모든 셀 객체가 세 가지 특정 메서드의 존재를 보장하도록 정의한다: minWidth(), minHeight()그리고 draw(width, height).
1. 인터페이스 계약
이 메서드들을 표준화함으로써 레이아웃 로직은 개별 셀의 내부 데이터 타입을 알지 않아도 전체 행과 열의 크기를 계산할 수 있다. 이것은 전형적인 인터페이스 기반 다형성.
2. TextCell 구현
The TextCell 생성자는 문자열을 줄 단위로 나누어 배열로 만듦으로써 원시 입력을 준비한다. 이는 복잡성을 렌더링 단계에서 인스턴스 생성 단계로 옮긴다.
this.text = text.split("\n");
3. 결정론적 그림 그리기
The draw(width, height) 메서드는 repeat() 보조 함수를 사용하여 모든 셀 출력이 완벽하게 패딩되도록 보장한다. 이는 내용 길이에 관계없이 수직 및 수평 정렬을 유지한다.
$$\text{패딩} = \text{너비} - \text{줄의 길이}$$
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>